// 枚举
enum UserLevelCode {
    Visitor = 10001,
    // 这种数字类型的值，枚举能够自动累加值，但是如果存在字符串类型的值，就不会自动累加了。
    NonVIPUser,
    VIPUser,
    Admin = 10010,
    Mixed = 'Mixed',
}


// 接口(所定义的键值对，不能多也不能少)
interface Parent { // 接口一般首字母大写
    readonly name: string; // 创建时可修改值, 之后不可修改
    age?: number; // 不确定参数是否会传, 或者存在
    [prop: string]: any; // 扩展任意键值对(键必须是 string类型。 值是any类型)
}
interface Child extends Parent { // 可扩展
    sex: string;
    userCode: string | number;
    grandson?: Parent;
}
const user: Child = {
    name: '张三',
    age: 20,
    happy: 'code',
    sex: '男',
    userCode: UserLevelCode.NonVIPUser
};
const allUser: Child[] = [
    {
        name: '张三',
        age: 20,
        happy: 'code',
        sex: '男',
        userCode: UserLevelCode.NonVIPUser
    }
]
const grandSon: any = null


// 泛型
const set = new Set<number>();
set.add(1);
const map = new Map<number, string>();
map.set(1, '1');
  